﻿/*
 * Script: "geolocalizacion_consultar_general.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Inicialización de Variables

var map				= null;
var markers			= null;
var infoBubbleTurno = null;
var markerClusterer = null;
var ClustereOnOff	= "on";

// Variables donde se guardan los datos de las Infracciones a mostrar
var lista_id_infraccion 	= null;
var lista_coord_x 			= null;
var lista_coord_y 			= null;
var lista_nro_boleta 		= null;
var lista_id_motivo 		= null;
var lista_fecha 			= null;
var lista_hora 				= null;
var lista_id_tipo_ide_inf 	= null;
var lista_nro_ide_inf 		= null;
var lista_nombre_infractor 	= null;
var lista_nombre_status 	= null;

var lista_motivo_id 		= null;
var lista_motivo_nombre 	= null;
var nombre_motivo 			= new Array();


// =================================================================================================================
// ================================= MAPA DE GEOLOCALIZACION - CONSULTAR GENERAL ===================================
// =================================================================================================================

function geolocalizacion_consultar_general( overviewMap ) {
	
	// Inicializamos los Datos de los Resultados a mostrar
	inicializar_datos();
	
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(mapa_coord_x).toFixed(8), parseFloat(mapa_coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(mapa_zoom),
		zoomControlOptions: {
      		style: google.maps.ZoomControlStyle.LARGE
    	},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		overviewMapControl: overviewMap,
		overviewMapControlOptions: {
    		opened: overviewMap
  		}
	}
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	
	// Inicializamos y Seteamos las Variables de los Marcadores
	pintar_resultados();
	
	// Agregamos Cluster al Mapa
	agregar_markerClusterer();
}


// =================================================================================================================
// ========================================= INICALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos() {
	var h_ls_id_infraccion 		= document.getElementById("h_ls_id_infraccion").value;
	lista_id_infraccion 		= h_ls_id_infraccion.split( "/*" );
	
	var h_ls_coord_x 			= document.getElementById("h_ls_coord_x").value;
	lista_coord_x 				= h_ls_coord_x.split( "/*" );
	
	var h_ls_coord_y 			= document.getElementById("h_ls_coord_y").value;
	lista_coord_y 				= h_ls_coord_y.split( "/*" );
	
	var h_ls_nro_boleta 		= document.getElementById("h_ls_nro_boleta").value;
	lista_nro_boleta 			= h_ls_nro_boleta.split( "/*" );
	
	var h_ls_id_motivo 			= document.getElementById("h_ls_id_motivo").value;
	lista_id_motivo 			= h_ls_id_motivo.split( "/*" );
	
	var h_ls_fecha 				= document.getElementById("h_ls_fecha").value;
	lista_fecha 				= h_ls_fecha.split( "/*" );
	
	var h_ls_hora 				= document.getElementById("h_ls_hora").value;
	lista_hora 					= h_ls_hora.split( "/*" );
	
	var h_ls_id_tipo_ide_inf 	= document.getElementById("h_ls_id_tipo_ide_inf").value;
	lista_id_tipo_ide_inf 		= h_ls_id_tipo_ide_inf.split( "/*" );
	
	var h_ls_nro_ide_inf 		= document.getElementById("h_ls_nro_ide_inf").value;
	lista_nro_ide_inf 			= h_ls_nro_ide_inf.split( "/*" );
	
	var h_ls_nombre_infractor 	= document.getElementById("h_ls_nombre_infractor").value;
	lista_nombre_infractor 		= h_ls_nombre_infractor.split( "/*" );
	
	var h_ls_nombre_status 		= document.getElementById("h_ls_nombre_status").value;
	lista_nombre_status 		= h_ls_nombre_status.split( "/*" );
	
	
	var h_ls_motivo_id 			= document.getElementById("h_ls_motivo_id").value;
	lista_motivo_id 			= h_ls_motivo_id.split( "/*" );
	
	var h_ls_motivo_nombre 		= document.getElementById("h_ls_motivo_nombre").value;
	lista_motivo_nombre 		= h_ls_motivo_nombre.split( "/*" );
	
	nombre_motivo = new Array();
	for ( i = 0; i < lista_motivo_id.length - 1; i++ ) {
		nombre_motivo[lista_motivo_id[i]] 	= lista_motivo_nombre[i];
	}
}
		

// =================================================================================================================
// ================================== PINTA LAS SEÑALES DE TRANSITO EN EL MAPA =====================================
// =================================================================================================================

function pintar_resultados() {
	var infowindow_div_infra 			= document.getElementById('infowindow_div_infra').innerHTML;
	var infowindow_div_ubicacion 		= document.getElementById('infowindow_div_ubicacion').innerHTML;
	
	// Arreglo donde se dejan los Marcadores para ser pasados a la Funcion de Cluster
	markers = [];
	
	for ( var j = 0; j < lista_id_infraccion.length-1; j++ ) {
		// Obtenemos los atributos de cada Marcador
		var point 		= new google.maps.LatLng( parseFloat(lista_coord_x[j]).toFixed(8), parseFloat(lista_coord_y[j]).toFixed(8) );
		
		var icono_marker = "../../publico/imagenes/infraccion/peq/infraccion.gif";
		var image = new google.maps.MarkerImage( icono_marker,
			new google.maps.Size( 25, 25 ),
			new google.maps.Point( 0, 0 ),
			new google.maps.Point( 12.5, 12.5 ));
		
		// Llenamos la Informacion del InfoWindow
		// Si el Tab es Infraccion
		html_tab1 	= infowindow_div_infra;
		html_tab1	= html_tab1.replace("%%element.id_infraccion%%",		lista_id_infraccion[j]);
		
		if ( lista_nro_boleta[j] == "" ) {
			html_tab1 	= html_tab1.replace('<tr><td class="titulo_info_tab">Nro. Boleta:</td><td>%%element.nro_boleta%%</td></tr>',			"");
		} else {
			html_tab1 	= html_tab1.replace("%%element.nro_boleta%%",		lista_nro_boleta[j]);	
		}
		html_tab1 	= html_tab1.replace("%%element.nombre_motivo%%",		nombre_motivo[lista_id_motivo[j]]);
		html_tab1 	= html_tab1.replace("%%element.fecha%%",				lista_fecha[j]);
		html_tab1 	= html_tab1.replace("%%element.hora%%",					lista_hora[j]);
		
		html_tab1 	= html_tab1.replace("%%element.identificacion_infractor%%",		lista_id_tipo_ide_inf[j] + "-" + lista_nro_ide_inf[j]);
		html_tab1 	= html_tab1.replace("%%element.nombre_infractor%%",		lista_nombre_infractor[j]);
		
		html_tab1 = html_tab1.replace("%%element.nombre_status%%",			lista_nombre_status[j]);
		
		// Si el Tab es Ubicación
		html_tab2 	= infowindow_div_ubicacion;
		html_tab2	= html_tab2.replace("%%element.id_infraccion%%",		lista_id_infraccion[j]);
		
		
		// Configuramos el infoBubble
		infoBubble = new InfoBubble({
			maxWidth: 300,
			minWidth: 300,
			maxHeight: 200,
			minHeight: 200,
			map: map,
			shadowStyle: 1,
			padding: 5,
			backgroundColor: '#FFFFFF',
			borderRadius: 15,
			arrowSize: 20,
			borderWidth: 2,
			borderColor: color_menu,
			disableAutoPan: false,
			hideCloseButton: false,
			arrowPosition: 50,
			arrowStyle: 0
		});
		
		// Agregamos los Tabs al infoBubble
		infoBubble.addTab('Infracción', 		html_tab1);
		infoBubble.addTab('Ubicación', 			html_tab2);
		
		// Creamos el Marcador
		var marker = new google.maps.Marker({
			position: point,
			map: map,
			title: "Infracción: " + lista_id_infraccion[j],
			icon: image,
			infoBubblez: infoBubble
		});
		
		// Creamos el Evento
		google.maps.event.addListener(marker, "click", function () {
			if (!(this.infoBubblez).isOpen()) {
				if ( infoBubbleTurno != null ) {
					infoBubbleTurno.close();	
				}
				(this.infoBubblez).open(map, this);
				infoBubbleTurno = this.infoBubblez;
			}
		});
		
		// Agregamos el Marcador al Arreglo
		markers.push(marker);
	}
}